<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>

        // 关于兔子在理想环境下繁殖的速度。
        // 假设一对新生的兔子，一只公的，一只母的，被放进田里豢养。
        // 兔子可以在一个月大的时候交配，这样在第二个月的月底，雌性兔子就能生产出另一对兔子
        // 。假设兔子永远不会死，从第二个月开始，雌兔每个月都会生一对新的兔子(一只雄的，一只雌的)。
        // 斐波那契提出的问题是。一年后总共会有多少对兔子？

        // 第一个月: 1
        // 第二个月: 1
        // 第三个月: 2
        // 第四个月: 3
        // 第五个月: 5
        // 第六个月: 8
        // 第七个月: 13
        // .... 规律(本质)

        // 思考: 本月兔子对数 = 上月兔子对数 +  新增的兔子对数(上上个月的兔子对数有多少,就会新增多少对)

        // n个月 = n-1的数量 +  n-2的数量

        // 求 第 n 个月  兔子对数
        function fb(n) {
            // 跳出条件
            if(n===1 || n===2){
                return 1
            }
            return fb(n-1) + fb(n-2);
        }
        console.log(fb(12));
        // fb(1) 不能再拆解了
        // fb(2) 也不能再拆解了
        // fb(5)===> fb(4)+fb(3)==> fb(3)+fb(2) + fb(2)+ fb(1)====> fb(2)+fb(1)+1+ 1+ 1 ==> 1+1+1+ 1+ 1 === 5


        // 10个 台阶  每次 走一层  或者  两层 ,走到第十层 有多少种走法
        // 1个台阶  1
        // 2个台阶  2 
        // 3个台阶  3
        // 4个台阶  5
        // ... 
        // n个台阶  (n-1方法 +  n-2的方法)
        function foo(n){
            // if(n===1){
            //     return 1
            // }
            // if(n===2){
            //     return 2
            // }
            if(n===1 || n===2){
                return n
            }
            return foo(n-1) + foo(n-2);
        }
        console.log(foo(10));
    </script>
</body>

</html>